package com.lulalei.dbviewer.service;

import com.lulalei.dbviewer.commons.api.ResultBean;
import com.lulalei.dbviewer.commons.bean.TableBean;
import com.lulalei.dbviewer.commons.exception.CustomizeException;
import com.lulalei.dbviewer.dto.DBConnectDTO;
import com.lulalei.dbviewer.dto.DBTablesInfoDTO;
import com.lulalei.dbviewer.dto.GenerateDTO;
import com.lulalei.dbviewer.vo.LinkedDBVO;
import com.lulalei.dbviewer.vo.PageVO;

import java.sql.SQLException;
import java.util.List;

public interface ViewerService {

    /**
     * 获取已经连接的连接对象
     * @return 通用返回结果<已经连接的连接对象的集合>
     */
    ResultBean<List<LinkedDBVO>> getLinkDBs();

    /**
     * 连接数据库
     * @param dbConnectDTO 数据库连接参数
     * @return 通用返回结果
     */
    ResultBean<Boolean> connect(DBConnectDTO dbConnectDTO) throws CustomizeException, SQLException;

    /**
     * 获取连接名数据库的所有的表信息
     * @param dbTablesInfoDTO 前端传来的信息
     * @return 所有的表信息
     */
    ResultBean<PageVO<TableBean>> getTablesInfo(DBTablesInfoDTO dbTablesInfoDTO) throws CustomizeException, SQLException;

    /**
     * 生成java文件
     */
    ResultBean<String> generate(GenerateDTO generateDTO) throws CustomizeException;

}
